/***
题目链接：环路检测
如果链表中有某个节点，可以通过连续跟踪 next 指针再次到达，则链表中存在环。 为了表示给定链表中的环，
我们使用整数 pos 来表示链表尾连接到链表中的位置（索引从 0 开始）。 
如果 pos 是 -1，则在该链表中没有环。注意：pos 不作为参数进行传递，仅仅是为了标识链表的实际情况。
链接：https://leetcode-cn.com/problems/linked-list-cycle-lcci/
***/
/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    ListNode *detectCycle(ListNode *head) {
        unordered_set < ListNode* > u_set;
        while(head  != nullptr){
            if(u_set.count(head)) return head;
            u_set.insert(head);
            head = head->next;
        }
        return nullptr;   
    }
};

// 执行结果：

// 执行用时：12 ms, 在所有 C++ 提交中击败了 28.86%的用户
// 内存消耗：9.2 MB, 在所有 C++ 提交中击败了 21.50%的用户